import SimpleBoss from './SimpleBoss.js'
import AdvancedBoss from './AdvancedBoss.js'
import {
  BOSS_FIRST_APPEARANCE_SCORE,
  BOSS_APPEARANCE_INTERVAL,
} from '../utils/constants.js'

// Boss工厂类
export default class BossFactory {
  // Boss类型
  static BOSS_TYPES = {
    simple: SimpleBoss,
    advanced: AdvancedBoss,
    // 未来可以添加更多Boss类型
    // final: FinalBoss,
  }

  // 创建Boss
  static createBoss(type = 'simple') {
    // 检查是否存在指定类型的Boss
    if (this.BOSS_TYPES[type]) {
      return new this.BOSS_TYPES[type]()
    }

    // 默认返回简单Boss
    return new SimpleBoss()
  }

  // 根据分数判断是否应该生成Boss
  static shouldSpawnBoss(score, lastBossSpawnScore) {
    // 如果是第一个Boss，在指定分数时生成
    if (!lastBossSpawnScore && score >= BOSS_FIRST_APPEARANCE_SCORE) {
      return true
    }

    // 检查是否达到生成下一个Boss的分数
    return (
      lastBossSpawnScore &&
      score >= lastBossSpawnScore + BOSS_APPEARANCE_INTERVAL
    )
  }

  // 根据分数获取Boss类型
  static getBossTypeByScore(score) {
    // 根据分数返回不同类型的Boss
    if (score >= BOSS_FIRST_APPEARANCE_SCORE * 3) {
      return 'advanced'
    }

    return 'simple'
  }
}
